package com.demo.thread;

import java.util.concurrent.BlockingQueue;

/**
 * 一般put,take 是阻塞的
 * offer（添加）,poll (添加对列和移除对列头部元素，不满足返回false),不抛异常
 * add,remove 会抛出异常
 *
 * 好了，竟然说了这么多了，就把从队列中取元素的方法也顺便一说。
 * 从队列中取出并移除头元素的方法有：poll，remove，take。
 * poll: 若队列为空，返回null。
 * remove:若队列为空，抛出NoSuchElementException异常。
 * take:若队列为空，发生阻塞，等待有元素。
 *
 * 这里的put 不阻塞，不限制，优先级无阻塞队列，。这是一个无界有序的阻塞队列
 */
public class PriorityBlockingQueueQuestion {

    public static void main(String[] args) throws  Exception {
        //the initial capacity for this priority queue
        BlockingQueue<Integer> queue = new java.util.concurrent.PriorityBlockingQueue<>(2);
        queue.put(9);
        queue.put(1);
        queue.put(8);
        System.out.println("queue size:"+queue.size());
        System.out.println("queue take :"+queue.take());
        System.out.println("queue=:"+queue);



    }

}
